def find_duplicate(nums):
    """
    问题：在包含n+1个元素的数组中（元素1..n），找出唯一重复数（不修改数组，空间O(1)）
    思路：快慢指针，将数组视为链表（索引i→值nums[i]），重复数对应环的入口
    """
    # 快慢指针找环
    slow, fast = nums[0], nums[nums[0]]
    while slow != fast:
        slow = nums[slow]
        fast = nums[nums[fast]]

    # 找环入口（重复数）
    slow = 0
    while slow != fast:
        slow = nums[slow]
        fast = nums[fast]
    return slow


# 测试
print(find_duplicate([1, 3, 4, 2, 2]))  # 输出：2
print(find_duplicate([3, 1, 3, 4, 2]))  # 输出：3